package leetcode.Two_hundred_to_Three_hundred;

/**
 * 235. 二叉搜索树的最近公共祖先
 */
public class Test235 {

    static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
    // <1>: p、q 一个小于 node 一个大于 node 是最简单的，答案就是 node
    // <2>: p、q 均小于 node 就要在 node 的左边递归，不然就要在右边递归
    // <3>: p、q 其中某一个节点是另外一个节点的祖先，那么答案就是这个祖先节点
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if (p.val < root.val && q.val < root.val) {
            return lowestCommonAncestor(root.left, p, q);
        }
        if (p.val > root.val && q.val > root.val) {
            return lowestCommonAncestor(root.right, p, q);
        }
        return root;
    }
}
